home *** CD-ROM | disk | FTP | other *** search
- /* MainWindow.c */
-
- #include <Types.h>
- #include <Quickdraw.h>
- #include <Controls.h>
- #include <Dialogs.h>
- #include <Events.h>
- #include <Lists.h>
- #include <Menus.h>
- #include <Resources.h>
- #include <Sound.h>
- #include <TextEdit.h>
- #include <ToolUtils.h>
- #include <Appearance.h>
- #include <stdlib.h>
-
- #include "Globals.h"
- #include "ResourceDefs.h"
- #include "DoScrap.h"
- #include "Miscellany.h"
- #include "Scrolling.h"
- #include "ControlUtils.h"
- #include "Add.h"
- #include "Dispatcher.h"
- #include "DDocData.h"
- #include "AMReminderEngine.h"
- #include "AMReminderDoc.h"
- #include "MainWindow.h"
-
-
- static AMReminderEngine* GetEngine (MainWindow* self);
-
- static void DoUndo (MainWindow* self);
- static void DoCut (MainWindow* self);
- static void DoCopy (MainWindow* self);
- static void DoPaste (MainWindow* self);
- static void DoClear (MainWindow* self);
- static void DoSelectAll (MainWindow* self);
- static void DoShowClipboard (MainWindow* self);
-
- static void DoAddReminder (MainWindow* self);
- static void DoEditReminder (MainWindow* self);
- static void DoDeleteReminder (MainWindow* self);
- static void BuildRemindersList (ControlHandle inList);
-
- //----------
- MainWindow* NewMainWindow ()
- {
- MainWindow* window;
-
- window = (MainWindow*)malloc (sizeof (MainWindow));
- MainWindow_Init (window);
- SetClassID (window, classMainWindow);
-
- return window;
- }
-
- //----------
- void DeleteMainWindow (
- MainWindow* window)
- {
- MainWindow_Free (window);
- free (window);
- }
-
- //----------
- void MainWindow_Create (
- AMDoc* inDoc,
- DDocData* inData)
- {
- MainWindow* winObj = NewMainWindow ();
-
- if (winObj != nil) {
- MainWindow_Open (winObj, inDoc, inData);
- }
- }
-
- //----------
- void MainWindow_Init (
- MainWindow* self)
- {
- }
-
- //----------
- void MainWindow_Free (
- MainWindow* self)
- {
- }
-
- //----------
- AMReminderEngine* GetEngine (
- MainWindow* self)
- {
- return (AMReminderEngine*) self->super.mDoc->mEngine;
- }
-
- /*----------*/
- void MainWindow_Open (
- MainWindow* self,
- AMDoc* inDoc,
- DDocData* inData)
- {
- WindowPtr window;
- Handle wftb;
-
- self->super.mDoc = inDoc;
- self->mData = inData;
- AddResponder ((AMSignaler*) self->mData, (AMResponder*) self);
-
- window = GetNewCWindow (WIND_MainWindow, nil, (WindowPtr) -1L);
- if (AMEngine_GetFilename (self->super.mDoc->mEngine) [0] != 0) {
- SetWTitle (window, AMEngine_GetFilename (self->super.mDoc->mEngine));
- }
- self->super.mWindow = window;
- ((AMReminderDoc*)self->super.mDoc)->mMainWindowPtr = window;
-
- SetWindowKind (window, 'AM');
- SetWRefCon (window, (long) self);
- SetPort (window);
- SetInfo (window);
-
- wftb = GetResource ('Wftb', WIND_MainWindow);
-
- CreateRootControl (window, &self->super.mRootControl);
-
- self->super.vScroll = nil;
- self->super.hScroll = nil;
-
-
- self->mLogoHandle = GetNewControl (CNTL_Logo, window);
- SetWindowItemFont (self->mLogoHandle, wftb, 1);
-
- self->mYearLabel = GetNewControl (CNTL_Year, window);
- SetWindowItemFont (self->mYearLabel, wftb, 2);
- SetControlFromTEXT (self->mYearLabel, TEXT_Year);
-
- self->mRemindersLabelLabel = GetNewControl (CNTL_RemindersLabel, window);
- SetWindowItemFont (self->mRemindersLabelLabel, wftb, 3);
- SetControlFromTEXT (self->mRemindersLabelLabel, TEXT_RemindersLabel);
-
- self->mRemindersHandle = GetNewControl (CNTL_Reminders, window);
- SetWindowItemFont (self->mRemindersHandle, wftb, 4);
- BuildRemindersList (self->mRemindersHandle);
- SetListBoxChoice (self->mRemindersHandle, GetReminderChoice (self->mData));
-
- self->mAddHandle = GetNewControl (CNTL_Add, window);
- SetWindowItemFont (self->mAddHandle, wftb, 5);
- SetDefaultState (self->mAddHandle, true);
-
- self->mEditHandle = GetNewControl (CNTL_Edit, window);
- SetWindowItemFont (self->mEditHandle, wftb, 6);
-
- self->mDeleteHandle = GetNewControl (CNTL_Delete, window);
- SetWindowItemFont (self->mDeleteHandle, wftb, 7);
-
- AdvanceKeyboardFocus (window);
-
- ShowWindow (window);
- }
-
- /*----------*/
- void MainWindow_Close (
- MainWindow* self)
- {
- RemoveResponder ((AMSignaler*) self->mData, (AMResponder*) self);
-
- ((AMReminderDoc*)self->super.mDoc)->mMainWindowPtr = nil;
- SetInfo (nil);
- HideWindow (self->super.mWindow);
- DisposeWindow (self->super.mWindow);
-
- DeleteMainWindow (self);
- }
-
- /*----------*/
- void BuildRemindersList (
- ControlHandle inControl)
- {
- ListHandle list;
-
- list = GetListHandle (inControl);
- AddToList ("\pOne", list);
- AddToList ("\pTwo", list);
- AddToList ("\pThree", list);
- AddToList ("\pInfinity", list);
-
- }
-
- /*----------*/
- void MainWindow_Track (
- MainWindow* self,
- ControlHandle whichControl,
- short whichPart,
- Point where)
- {
- Rect bounds;
- short newValue;
-
- if (whichControl == self->mRemindersHandle) {
- if (TrackClick (self->mRemindersHandle, where)) {
- SetReminderChoice (self->mData, GetListBoxChoice (self->mRemindersHandle));
- }
- }
- if (whichControl == self->mAddHandle) {
- if (TrackClick (self->mAddHandle, where)) {
- DoAddReminder (self);
- }
- }
- if (whichControl == self->mEditHandle) {
- if (TrackClick (self->mEditHandle, where)) {
- DoEditReminder (self);
- }
- }
- if (whichControl == self->mDeleteHandle) {
- if (TrackClick (self->mDeleteHandle, where)) {
- DoDeleteReminder (self);
- }
- }
- }
-
- //----------
- void MainWindow_DataChanged (
- MainWindow* self,
- long inDataID)
- {
- }
-
- /*----------*/
- void MainWindow_MouseIn (
- MainWindow* self,
- Point where,
- short modifiers)
- {
- Rect bounds;
-
- }
-
- //----------
- void MainWindow_ExitCurField (
- MainWindow* self)
- {
- ControlHandle focus;
-
- GetKeyboardFocus (self->super.mWindow, &focus);
-
- if (focus == nil) {
- // nothing to exit
-
- }
- }
-
- /*----------*/
- void MainWindow_TypeIn (
- MainWindow* self,
- char ch)
- {
- ControlHandle focus;
- short keyCode;
-
- GetKeyboardFocus (self->super.mWindow, &focus);
-
- if ((ch == charEnter)
- || (ch == charReturn)) {
- MainWindow_ExitCurField (self); // Dispatch
- SimulateClick (self->mAddHandle);
- DoAddReminder;
- } else if (ch == charEsc) {
- } else if (ch == charTab) {
- AMWindow_DoTab ((AMWindow*) self, (curEvent.modifiers & optionKey) != 0);
- } else if (focus != nil) {
- keyCode = curEvent.message & keyCodeMask;
- HandleControlKey (focus, keyCode, ch, curEvent.modifiers);
- AMEngine_SetDirty (self->super.mDoc->mEngine);
- } else {
- SysBeep (1);
- }
- }
-
- /*----------*/
- void MainWindow_Resize (
- MainWindow* self)
- {
- /* application-specific code to resize items in window */
- }
-
- /*----------*/
- void MainWindow_Scroll (
- MainWindow* self,
- short newValue,
- short oldValue)
- {
- /* application-specific code to scroll window */
- if (gWhichScroll == self->super.vScroll) {
- } else { // horizontal
- }
- }
-
- //----------
- void DoUndo (
- MainWindow* self)
- {
- } // DoUndo
-
- //----------
- void DoCut (
- MainWindow* self)
- {
- TEHandle curTE = AMWindow_GetCurTE ((AMWindow*) self);
-
- if (curTE != nil) {
- TECut (curTE);
- AMEngine_SetDirty (self->super.mDoc->mEngine);
- scrapDirty = true;
- }
- } // DoCut
-
- //----------
- void DoCopy (
- MainWindow* self)
- {
- TEHandle curTE = AMWindow_GetCurTE ((AMWindow*) self);
-
- if (curTE != nil) {
- TECopy (curTE);
- scrapDirty = true;
- }
- } // DoCopy
-
- //----------
- void DoPaste (
- MainWindow* self)
- {
- TEHandle curTE = AMWindow_GetCurTE ((AMWindow*) self);
-
- if (curTE != nil) {
- TEPaste (curTE);
- AMEngine_SetDirty (self->super.mDoc->mEngine);
- }
- } // DoPaste
-
- //----------
- void DoClear (
- MainWindow* self)
- {
- TEHandle curTE = AMWindow_GetCurTE ((AMWindow*) self);
-
- if (curTE != nil) {
- TEDelete (curTE);
- AMEngine_SetDirty (self->super.mDoc->mEngine);
- }
- } // DoClear
-
- //----------
- void DoSelectAll (
- MainWindow* self)
- {
- TEHandle curTE = AMWindow_GetCurTE ((AMWindow*) self);
-
- if (curTE != nil) {
- TESetSelect (0, 32767, curTE);
- }
- } // DoSelectAll
-
- //----------
- void DoShowClipboard (
- MainWindow* self)
- {
- } // DoShowClipboard
-
- //----------
- void DoAddReminder (
- MainWindow* self)
- {
- DReminder* data;
-
- data = NewDReminder ();
-
- // initialize data
-
- if (GetAdd (data)) {
- // user clicked OK, so
- // do something with data
- }
- DeleteDReminder (data);
- }
-
- //----------
- void DoEditReminder (
- MainWindow* self)
- {
- DReminder* data;
-
- data = NewDReminder ();
-
- // initialize data
-
- if (GetAdd (data)) {
- // user clicked OK, so
- // do something with data
- }
- DeleteDReminder (data);
- }
-
- //----------
- void DoDeleteReminder (
- MainWindow* self)
- {
- }
-
- //----------
- Boolean MainWindow_DoCommand (
- MainWindow* self,
- long inCommand)
- {
- Boolean result = true;
-
- switch (inCommand) {
- case cmdUndo:
- DoUndo (self);
- break;
- case cmdCut:
- DoCut (self);
- break;
- case cmdCopy:
- DoCopy (self);
- break;
- case cmdPaste:
- DoPaste (self);
- break;
- case cmdClear:
- DoClear (self);
- break;
- case cmdSelectAll:
- DoSelectAll (self);
- break;
- case cmdShowClipboard:
- DoShowClipboard (self);
- break;
- case cmdAddReminder:
- DoAddReminder (self);
- break;
- case cmdEditReminder:
- DoEditReminder (self);
- break;
- case cmdDeleteReminder:
- DoDeleteReminder (self);
- break;
-
- default:
- result = false;
- } // switch
-
- return result;
- }
-